package com.bilibili.movies.util;

import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.resource.ResourceHttpRequestHandler;

//import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;

/**
 * @author LBy
 * ResourceHttpRequestHandler是springboot加载静态资源的一个类，
 * 平时是用来从你resources/statics等目录加载文件的,
 * 所以，这个类本身就是支持range请求数据的。
 * 这里用自定义类NonStaticResourceHttpRequestHandler来封装他
 * 重写getResource方法，当调用他来传视频时并不是调用getResource方法（底层调用），
 * 而是调用handleRequest(request, response);
 */
@Component
public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler {

    public final static String ATTR_FILE = "NON-STATIC-FILE";

    @Override
    protected Resource getResource(HttpServletRequest request) {
        String filePath =  (String) request.getAttribute(ATTR_FILE);
        return new FileSystemResource(filePath);
    }
}